package vm

import (
	"fmt"
	"os"
	"syscall"
	"unsafe"
)

// 这部分代码平台相关，其他系统上运行需要调整
func init() {
	// 获取终端文件描述符
	fd := int(os.Stdin.Fd())
	// 获取终端参数
	term := syscall.Termios{}
	_, _, err := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), syscall.TIOCGETA, uintptr(unsafe.Pointer(&term)))
	if err != 0 {
		fmt.Println("Error getting terminal attributes:", err)
		return
	}
	// 修改终端属性
	term.Lflag &= ^uint64(syscall.ICANON) & ^uint64(syscall.ECHO)

	// 设置终端属性
	_, _, err = syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), syscall.TIOCSETA, uintptr(unsafe.Pointer(&term)))
	if err != 0 {
		fmt.Println("Error setting terminal attributes:", err)
		return
	}
}
